#!/usr/bin/python
#coding=utf-8
'''
    4.6 带有外部状态的生成器函数
'''

# 想让生成器暴露外部状态给用户。
# 可以将它实现为一个类，然后把生成器函数放到__iter__()方法中去
from collections import deque

class linehistory:
    def __init__(self, lines, histlen=3):
        self.lines = lines
        self.history = deque(maxlen=histlen)

    def __iter__(self):
        for lineno, line in enumerate(self.lines, 1):
            self.history.append(lineno, line)
            yield line

    def clear(self):
        self.history.clear()

# 可以考虑使用上面介绍的定义类的方式。
# 在 iter () 方法中定义你的生成器不会改变你任何的算法逻辑
